/**
 * 在 JavaScript 中，用于检查变量类型的 typeof ，
 * 它会返回 "string" / "number" / "object" / "undefined" 等值。
 * 
 * 而TypeScript 还新增了用于类型查询的 typeof ，即 Type Query Operator，
 * 这个 typeof 返回的是一个 TypeScript 类型：
 * 
 * 绝大部分情况下，typeof 返回的类型就是当把鼠标悬浮在变量名上时出现的推导后的类型，并且是 最窄的推导程度（即到字面量类型的级别）。
 * 也不必担心混用了这两种 typeof，
 * 在逻辑代码中使用的 typeof 一定会是 JavaScript 中的 typeof，
 * 而类型代码（如类型标注、类型别名中等）中的一定是类型查询的 typeof 。
*/
const str = "hanxuming";

const obj = { name: "hanxuming" };

const nullVar = null;
const undefinedVar = undefined;

const func = (input: string) => {
    return input.length > 10;
}

type Str = typeof str; // "hanxuming"
type Obj = typeof obj; // { name: string; }
type Null = typeof nullVar; // null
type Undefined = typeof undefined; // undefined
type Func = typeof func; // (input: string) => boolean

//在 TypeScript 中，类型查询操作符后是不允许使用表达式的
const isInputValid = (input: string) => {
    return input.length > 10;
}
// 不允许表达式
let isValid: typeof isInputValid("hanxuming");

//export {}：解决“无法重新声明块范围变量”错误提示问题
export { }